package com.shuda.system.entity;

import com.baomidou.mybatisplus.annotation.*;
import io.swagger.v3.oas.annotations.media.Schema;

import java.time.LocalDateTime;

/**
 * 租户实体类（system包），显式提供所有字段的getter/setter，避免Lombok依赖导致编译问题。
 *
 * 字段说明：
 * - id：主键ID
 * - tenantName/tenantCode：租户基础信息
 * - contactName/contactPhone/contactEmail/address：联系人与地址信息
 * - status：租户状态（0-禁用，1-启用）
 * - expireTime：过期时间
 * - config：租户配置（JSON格式）
 * - createBy/createTime/updateBy/updateTime：审计字段
 * - deleted：逻辑删除标记
 *
 * 方法：显式getter/setter，清晰入参/出参，异常不在实体层处理。
 *
 * @author ink
 * @Description: 系统租户实体
 * @date 2025-11-09 22:35
 */
@TableName("sys_tenant")
@Schema(description = "租户实体")
public class TenantEntity {

    @TableId(type = IdType.AUTO)
    @Schema(description = "租户ID")
    private Long id;

    @Schema(description = "租户名称")
    private String tenantName;

    @Schema(description = "租户编码")
    private String tenantCode;

    @Schema(description = "联系人")
    private String contactName;

    @Schema(description = "联系电话")
    private String contactPhone;

    @Schema(description = "联系邮箱")
    private String contactEmail;

    @Schema(description = "租户地址")
    private String address;

    @Schema(description = "租户状态（0-禁用，1-启用）")
    private Integer status;

    @Schema(description = "过期时间")
    private LocalDateTime expireTime;

    @Schema(description = "租户配置（JSON格式）")
    private String config;

    @Schema(description = "创建人")
    @TableField(fill = FieldFill.INSERT)
    private String createBy;

    @Schema(description = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    @Schema(description = "更新人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateBy;

    @Schema(description = "更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    @Schema(description = "删除标记（0-未删除，1-已删除）")
    private Integer deleted;

    /** 获取租户ID */
    public Long getId() { return id; }
    /** 设置租户ID */
    public void setId(Long id) { this.id = id; }

    /** 获取租户名称 */
    public String getTenantName() { return tenantName; }
    /** 设置租户名称 */
    public void setTenantName(String tenantName) { this.tenantName = tenantName; }

    /** 获取租户编码 */
    public String getTenantCode() { return tenantCode; }
    /** 设置租户编码 */
    public void setTenantCode(String tenantCode) { this.tenantCode = tenantCode; }

    /** 获取联系人 */
    public String getContactName() { return contactName; }
    /** 设置联系人 */
    public void setContactName(String contactName) { this.contactName = contactName; }

    /** 获取联系电话 */
    public String getContactPhone() { return contactPhone; }
    /** 设置联系电话 */
    public void setContactPhone(String contactPhone) { this.contactPhone = contactPhone; }

    /** 获取联系邮箱 */
    public String getContactEmail() { return contactEmail; }
    /** 设置联系邮箱 */
    public void setContactEmail(String contactEmail) { this.contactEmail = contactEmail; }

    /** 获取租户地址 */
    public String getAddress() { return address; }
    /** 设置租户地址 */
    public void setAddress(String address) { this.address = address; }

    /** 获取租户状态 */
    public Integer getStatus() { return status; }
    /** 设置租户状态 */
    public void setStatus(Integer status) { this.status = status; }

    /** 获取过期时间 */
    public LocalDateTime getExpireTime() { return expireTime; }
    /** 设置过期时间 */
    public void setExpireTime(LocalDateTime expireTime) { this.expireTime = expireTime; }

    /** 获取租户配置 */
    public String getConfig() { return config; }
    /** 设置租户配置 */
    public void setConfig(String config) { this.config = config; }

    /** 获取创建人 */
    public String getCreateBy() { return createBy; }
    /** 设置创建人 */
    public void setCreateBy(String createBy) { this.createBy = createBy; }

    /** 获取创建时间 */
    public LocalDateTime getCreateTime() { return createTime; }
    /** 设置创建时间 */
    public void setCreateTime(LocalDateTime createTime) { this.createTime = createTime; }

    /** 获取更新人 */
    public String getUpdateBy() { return updateBy; }
    /** 设置更新人 */
    public void setUpdateBy(String updateBy) { this.updateBy = updateBy; }

    /** 获取更新时间 */
    public LocalDateTime getUpdateTime() { return updateTime; }
    /** 设置更新时间 */
    public void setUpdateTime(LocalDateTime updateTime) { this.updateTime = updateTime; }

    /** 获取删除标记 */
    public Integer getDeleted() { return deleted; }
    /** 设置删除标记 */
    public void setDeleted(Integer deleted) { this.deleted = deleted; }
}